/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package unsch.secretaria.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.ArrayList;
import unsch.secretaria.bean.BConsultarExpediente;
import unsch.secretaria.bean.BEscuela;
import unsch.secretaria.bean.BExpediente;
import unsch.secretaria.ds.DSConexion;

/**
 *
 * @author davis
 */
public class DAOExpediente {

    public synchronized ArrayList<BConsultarExpediente> listarExpedientes(BExpediente oBExpediente, BEscuela oBEscuela) {

        Connection cn = null;
        CallableStatement call = null;
        ResultSet rs = null;

        ArrayList<BConsultarExpediente> lstExpediente = new ArrayList<BConsultarExpediente>();
        try {
            String sql = "{CALL ps_consultarExpediente(?,?,?)}";

            cn = new DSConexion().getConectar();
            call = cn.prepareCall(sql);
            call.setString(1, oBExpediente.getTipoExpediente());
            call.setString(2, oBExpediente.getEstado());
            call.setInt(3, oBEscuela.getIdEscuela());
            
            rs = call.executeQuery();

            while (rs.next()) {

                BConsultarExpediente oBConsultarExpediente = new BConsultarExpediente();
                oBConsultarExpediente.setCodigoExpediente(rs.getString(1));
                oBConsultarExpediente.setAlumno(rs.getString(2));
                oBConsultarExpediente.setEscuela(rs.getString(3));
                oBConsultarExpediente.setEstadoExpediente(rs.getString(4));

                lstExpediente.add(oBConsultarExpediente);
            }

            return lstExpediente;

        } catch (Exception e) {
            System.out.println("Error en listar expedientes" + e);
            return null;
        }
    }

    public ArrayList<BExpediente> listarTipoExpediente() {
        Connection cn = null;
        CallableStatement call = null;
        ResultSet rs = null;

        ArrayList<BExpediente> lstBExpedientes = new ArrayList<BExpediente>();
        try {
            String sql = "{CALL mostrarExpedienteParametro()}";

            cn = new DSConexion().getConectar();
            call = cn.prepareCall(sql);
            rs = call.executeQuery();
            while (rs.next()) {

                BExpediente oBExpediente = new BExpediente();
                oBExpediente.setTipoExpediente(rs.getString(1));

                lstBExpedientes.add(oBExpediente);
            }


            return lstBExpedientes;
        } catch (Exception e) {
            System.out.println("Error en listar tipo de expediente" + e);
            return null;
        }
    }
    
    
    public synchronized ArrayList<BConsultarExpediente> listarRelacionGradoAcademico(BConsultarExpediente oBConsultarExpediente){
        Connection cn = null;
        CallableStatement call = null;
        ResultSet rs = null;

        ArrayList<BConsultarExpediente> lstBConsultarExpediente= new ArrayList<BConsultarExpediente>();
        try {
            String sql = "{CALL ps_GenerarRelacionGAcademico(?)}";

            cn = new DSConexion().getConectar();
            call = cn.prepareCall(sql);
        //    call.setString(1,tipoE);
            call.setString(1, oBConsultarExpediente.getTipoExpediente());
            rs = call.executeQuery();
            while (rs.next()) {

                BConsultarExpediente oBConsultarExpediente1 = new BConsultarExpediente();
              
                oBConsultarExpediente.getAlumno();
                oBConsultarExpediente.getTipoExpediente();
                oBConsultarExpediente.getResolucion();

                lstBConsultarExpediente.add(oBConsultarExpediente);
            }

            return lstBConsultarExpediente;

        } catch (Exception e) {
            System.out.println("Error en listar......Grado Academico " + e);
            return null;
        }
    
    }
    
    
    public ArrayList<BExpediente> listarEstadoExpediente() {
        Connection cn = null;
        CallableStatement call = null;
        ResultSet rs = null;

        ArrayList<BExpediente> lstBExpedientes = new ArrayList<BExpediente>();
        try {
            String sql = "{CALL mostrarExpedienteParametro1()}";

            cn = new DSConexion().getConectar();
            call = cn.prepareCall(sql);
            rs = call.executeQuery();
            while (rs.next()) {

                BExpediente oBExpediente = new BExpediente();
                oBExpediente.setEstado(rs.getString(1));

                lstBExpedientes.add(oBExpediente);
            }

            return lstBExpedientes;

        } catch (Exception e) {
            System.out.println("Error en listar tipo de expediente" + e);
            return null;
        }
    }
    
        public synchronized ArrayList<BConsultarExpediente> revisarExpediente(String codigoExpediente) {

        Connection cn = null;
        CallableStatement call = null;
        ResultSet rs = null;

        ArrayList<BConsultarExpediente> lstExpediente = new ArrayList<BConsultarExpediente>();
        try {
            String sql = "{CALL ps_mostrarRevisarExpediente(?)}";

            cn = new DSConexion().getConectar();
            call = cn.prepareCall(sql);
            call.setString(1,codigoExpediente );
            rs = call.executeQuery();

            while (rs.next()) {

                BConsultarExpediente oBConsultarExpediente = new BConsultarExpediente();
                oBConsultarExpediente.setFacultad(rs.getString(1));
                oBConsultarExpediente.setEscuela(rs.getString(2));
                oBConsultarExpediente.setCodigoExpediente(rs.getString(3));
                oBConsultarExpediente.setTipoExpediente(rs.getString(4));
                oBConsultarExpediente.setResolucion(rs.getString(5));
                oBConsultarExpediente.setFechaAprobacionResolucion(rs.getString(6));
                oBConsultarExpediente.setAlumno(rs.getString(7));
                oBConsultarExpediente.setDni(rs.getString(8));
                oBConsultarExpediente.setCodigoAlumno(rs.getString(9));

                lstExpediente.add(oBConsultarExpediente);
            }

            return lstExpediente;

        } catch (Exception e) {
            System.out.println("Error en mostrar expedientes" + e);
            return null;
        }
    }
}
